Next | Prev | Up | Top | Contents | Index
Special Scheduling Disciplines
The default IRIX scheduling algorithm employs "degrading" priorities. Processes are ranked by a priority value, the one with the lowest priority number running first. But the priority number of a process grows steadily while it runs. The longer a process runs without suspending itself, the lower its priority becomes, and the more likely it is that another process will preempt it.
Nondegrading Priorities
A real-time process needs an unchanging priority. The kernel allows you to apply a nondegrading priority to a specified process. When this priority is in the range of real-time priorities (smaller than normal priorities), the process is scheduled from a real-time scheduling queue, which is tested before the normal dispatch queue. For more information, see "Setting a Nondegrading Batch Priority" and "Setting a Nondegrading Real-Time Priority".)
Deadline Scheduling
The kernel also supports a deadline scheduling discipline. Under deadline scheduling, a process can request a certain amount of processing time in every interval of a specified length--for example, 30 milliseconds in every 100 milliseconds. For more information, see "Using Deadline Scheduling".
Gang Scheduling
When your program is structured as a process group (see "Lightweight Process Creation With sproc()"), you can request that all the processes of the group be scheduled as a "gang." The kernel runs all the members of the gang concurrently, provided there are enough CPUs available to do so. This helps to ensure that, when members of the process group coordinate through the use of locks, a lock will usually be released in a timely manner. Without gang scheduling, the process that holds a lock might not be scheduled in the same interval as another process that is waiting on that lock.
For more information, see "Using Gang Scheduling".
Next | Prev | Up | Top | Contents | Index